<!DOCTYPE html>
<html lang="zh">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<title></title>
	</head>
	<body>
		
	</body>
	<script type="text/javascript">
		// ES6 允许使用 箭头 => 定义函数
		
		// 声明一个函数
		// let fn = function(){
			
		// }
		
		let fn = (a,b) =>{
			return a + b
		}
		// 调用函数
		let result = fn(10,20);
		console.log(result);//30
		
		//--------------------------------------------------------------------------------------------------------------------------
		
		//1. 箭头函数 this 是静态的.this始终指向函数声明所在作用域下的this的值
		function getName(){
			console.log(this.name);
		}
		let getName2 = () =>{
			console.log(this.name);
		}
		//设置window对象的name属性
		window.name = "清华";
		const school = {
			name:"北大"
		}
		// 直接调用
		getName();// 清华
		getName2();// 清华
		// call 方法调用 箭头函数的this指向不会改变
		getName.call(school);// 北大
		getName2.call(school);// 清华
		
		//2. 不能作为构造函数实例化对象
		/* 
			let Person = (name,age) =>{
				this.name = name;
				this.age = age;
			}
			let me = new Person('xiao',30);
			console.log(me);// Person is not a constructor   箭头函数不能作为构造函数实例化对象 
		*/
	   
	   //3.箭头函数不能使用 arguments 变量
	   /* 
	   let fn1 = () =>{
		   console.log(arguments);//arguments is not defined
	   }
	   fn1(1,2,3);
	   */
	  
	  //4.箭头函数的简写
			//1)省略小括号,当形参有且只有一个的时候
			let add = n =>{
				return n + n;
			}
			console.log(add(9));//18
			
			//2)省略花括号,当代码体只有一条语句的时候,此时return必须省
			// 而且语句的执行结果就是函数的返回值
			let pow = n => n * n;
			console.log(pow(8));
	</script>
</html>
